home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
17 Bit Software 3: The Continuation
/
17-Bit_The_Continuation_Disc.iso
/
arug
/
arug 26
/
spacelog
/
spacelog1.0
(
.txt
)
< prev
next >
Wrap
AmigaBASIC Source Code
|
1994-01-27
|
10KB
|
381 lines
REM * Manned Space Log 1.0 (c) Gene Heitman 05/02/88
REM *
REM * mission$ - is a matrix containing the mission data
REM * pt% - points to elements in mission$ matrix
REM * fld$ - contains the labels for the fields in m$
REM * fldlen% - lengths of each of the fields
REM * veh$ - data for vehicle totals
REM * veh% - contains actual vehicle totals
REM * annual% - contains the annual mission totals
REM * final% - contains the final mission totals
CLEAR ,97000,3000
WIDTH 80
OPTION BASE 1
DIM mission$(360,11),pt%(360),fld$(11),fldlen%(11),veh$(38,3),veh%(38),annual%(30,2),final%(2)
fld$(1)="Mission":fld$(2)="Nation":fld$(3)="Date":fld$(4)="Site"
fld$(5)="Vehicle":fld$(6)="Weight (LBS)":fld$(7)="Period (MIN)"
fld$(8)="Perigee (MI)":fld$(9)="Apogee (MI)":fld$(10)="Inclination (DEG)"
fld$(11)="Remarks"
fldlen%(1)=19:fldlen%(2)=4:fldlen%(3)=8:fldlen%(4)=8:fldlen%(5)=18
fldlen%(6)=6:fldlen%(7)=5:fldlen%(8)=5:fldlen%(9)=5:fldlen%(10)=5
fldlen%(11)=37
CLS
PRINT "Manned Space Log 1.0 (c) 1988 by Gene Heitman"
PRINT
loaddata:
PRINT "Loading mission data - please wait."
OPEN "SLMissions" FOR INPUT AS #1
count%=1
WHILE NOT EOF(1)
FOR fld%=1 TO 11
INPUT# 1,mission$(count%,fld%)
NEXT fld%
pt%(count%)=count%
count%=count%+1
WEND
CLOSE #1
count%=count%-1
definemenu:
MENU 1,0,1,"Change File"
MENU 1,1,1,"Add New Mission"
MENU 1,2,1,"Change Mission"
MENU 1,3,1,"Delete Mission"
MENU 1,4,1,"Save Changes"
MENU 2,0,1,"List Missions"
MENU 2,1,1,"All Missions"
MENU 2,2,1,"By Mission"
MENU 2,3,1,"By Nation"
MENU 2,4,1,"By Date"
MENU 2,5,1,"By Site"
MENU 2,6,1,"By Vehicle"
MENU 3,0,1,"Show Totals"
MENU 3,1,1,"Vehicle Table"
MENU 3,2,1,"Annual Table"
MENU 3,3,1,"Annual Graph"
MENU 4,0,1,"Quit"
MENU 4,1,1,"Quit SpaceLog"
CLS
PRINT "Press the right mouse button and choose a menu."
choice=0
WHILE choice<>4
choice=MENU(0)
ON choice GOSUB changefile,listmissions,showtotals,quit
WEND
quit:
MENU RESET
CLS
END
changefile:
ON MENU(1) GOSUB addnewmission,changemission,deletemission,savefile
RETURN
listmissions:
subchoice=MENU(1)
ON subchoice GOSUB allmissions,bymission,bynation,bydate,bysite,byvehicle
RETURN
showtotals:
ON MENU(1) GOSUB vehicletable,annualtable,annualgraph
RETURN
addnewmission:
CLS
IF count%=360 THEN
PRINT "The SLMissions data file is full."
ELSE
count%=count%+1
pt%(count%)=count%
PRINT "Add new mission #";count%
PRINT
FOR var%=1 TO 11
PRINT "What is the new ";fld$(var%);
INPUT mission$(count%,var%)
mission$(count%,var%)=UCASE$(mission$(count%,var%))
IF LEN(mission$(count%,var%))>fldlen%(var%) THEN
mission$(count%,var%)=LEFT$(mission$(count%,var%),fldlen%(var%))
PRINT "The field is too long. It is truncated to";fldlen%(var%);"characters."
END IF
NEXT var%
num1%=count%
GOSUB checknation
GOSUB checkdate
count$=RIGHT$(mission$(count%,3),2)+LEFT$(mission$(count%,3),2)+MID$(mission$(count%,3),4,2)
var%=1
comp$=""
WHILE (count$>=comp$) AND (var%<=count%-1)
comp$=RIGHT$(mission$(pt%(var%),3),2)+LEFT$(mission$(pt%(var%),3),2)+MID$(mission$(pt%(var%),3),4,2)
IF (count$<comp$) THEN
var2%=count%
FOR var3%=count% TO var%+1 STEP -1
pt%(var3%)=pt%(var3%-1)
NEXT var3%
pt%(var%)=var2%
END IF
var%=var%+1
WEND
END IF
PRINT
PRINT "Return to the menu."
RETURN
changemission:
CLS
getnumber:
PRINT "Change what mission # ( 1 -";count%;")";
INPUT num%
IF num%<1 OR num%>count% THEN getnumber
PRINT
GOSUB printdata
PRINT "The fields are:"
PRINT
FOR var%=1 TO 11
PRINT var%;"- ";fld$(var%)
NEXT var%
getfield:
PRINT
INPUT "What field do you want to change ( 1 - 11 )";var2%
IF var2%<1 OR var2%>11 THEN getfield
PRINT
PRINT "The ";fld$(var2%);" is : ";mission$(pt%(num%),var2%)
PRINT "What is the new ";fld$(var2%);
INPUT mission$(pt%(num%),var2%)
mission$(pt%(num%),var2%)=UCASE$(mission$(pt%(num%),var2%))
num1%=pt%(num%)
GOSUB checknation
GOSUB checkdate
IF LEN(mission$(pt%(num%),var2%))>fldlen%(var2%) THEN
mission$(pt%(num%),var2%)=LEFT$(mission$(pt%(num%),var2%),fldlen%(var2%))
PRINT
PRINT "The field is too long. It is truncated to";fldlen%(var2%);"characters."
END IF
PRINT
PRINT "Return to the menu."
RETURN
deletemission:
CLS
getnum:
PRINT "Delete what mission # ( 1 -";count%;")";
INPUT num%
PRINT
IF num%<1 OR num%>count% THEN getnum
GOSUB printdata
getcorrect:
INPUT "Is this correct ( Y / N )";var$
var$=UCASE$(var$)
IF var$<>"Y" AND var$<>"N" THEN getcorrect
IF var$="Y" THEN mission$(pt%(num%),2)="X"
PRINT
PRINT "Return to the menu."
RETURN
allmissions:
CLS
GOSUB bounds
GOSUB startkey
var$=""
num%=low%
WHILE (num%<=high%) AND (var$<>CHR$(13))
IF mission$(pt%(num%),2)<>"X" THEN
GOSUB printdata
GOSUB getkey
END IF
num%=num% + 1
WEND
PRINT "Return to the menu."
RETURN
bymission:
bynation:
bydate:
bysite:
byvehicle:
CLS
PRINT "What is the ";fld$(subchoice-1);
INPUT cp$
cp$=UCASE$(cp$)
PRINT
GOSUB bounds
GOSUB startkey
var$=""
num%=low%
WHILE (num%<=high%) AND (var$<>CHR$(13))
IF (mission$(pt%(num%),2)<>"X") AND (LEFT$(mission$(pt%(num%),subchoice-1),LEN(cp$))=cp$) THEN
GOSUB printdata
GOSUB getkey
END IF
num%=num% + 1
WEND
PRINT "Return to the menu."
RETURN
vehicletable:
CLS
PRINT "Computing vehicle totals - please wait."
numveh%=0
FOR var2%=1 TO count%
IF mission$(pt%(var2%),2)<>"X" THEN
flg%=0
FOR var3%=1 TO numveh%
IF mission$(pt%(var2%),5)=veh$(var3%,1) THEN
veh%(var3%)=veh%(var3%)+1
flg%=1
END IF
NEXT var3%
IF flg%=0 THEN
numveh%=numveh%+1
veh$(numveh%,1)=mission$(pt%(var2%),5)
veh$(numveh%,2)=mission$(pt%(var2%),2)
veh$(numveh%,3)=RIGHT$(mission$(pt%(var2%),3),2)
veh%(numveh%)=1
END IF
END IF
NEXT var2%
CLS
PRINT fld$(5);TAB(19);fld$(2);TAB(27);"Year";TAB(32);"#";TAB(40);fld$(5);TAB(59);fld$(2);TAB(67);"Year";TAB(72);"#"
FOR var4%=1 TO numveh% STEP 2
PRINT veh$(var4%,1);TAB(19);veh$(var4%,2);TAB(27);veh$(var4%,3);TAB(31);veh%(var4%);
IF var4%+1<=numveh% THEN PRINT TAB(40);veh$(var4%+1,1);TAB(59);veh$(var4%+1,2);TAB(67);veh$(var4%+1,3);TAB(71);veh%(var4%+1)
NEXT var4%
PRINT
PRINT
PRINT "Return to the menu."
RETURN
annualtable:
GOSUB computeannual
CLS
PRINT " Year";TAB(10);"USSR";TAB(20);"USA";TAB(30);"Year";TAB(40);"USSR";TAB(50);"USA"
FOR var%=1 TO last% STEP 2
PRINT var%+1900+first%;TAB(9);annual%(var%,1);TAB(19);annual%(var%,2);
IF var%+1<=last% THEN PRINT TAB(29);var%+1901+first%;TAB(39);annual%(var%+1,1);TAB(49);annual%(var%+1,2)
NEXT var%
PRINT
PRINT
PRINT "Total";TAB(20);"USSR =";final%(1);TAB(40);"USA =";final%(2)
PRINT
PRINT "Return to the menu."
RETURN
annualgraph:
GOSUB computeannual
CLS
PRINT " 20|"
PRINT " |"
PRINT "M |"
PRINT "i |"
PRINT "s |";TAB(60);"Total"
PRINT "s 15|"
PRINT "i |";TAB(60);"USSR =";final%(1)
PRINT "o |";TAB(60);"USA =";final%(2)
PRINT "n |"
PRINT "s |"
PRINT " 10|";TAB(60);"Return"
PRINT "P |";TAB(60);"to"
PRINT "e |";TAB(60);"the"
PRINT "r |";TAB(60);"menu."
PRINT " |"
PRINT "Y 5|"
PRINT "e |"
PRINT "a |"
PRINT "r |"
PRINT " |"
PRINT " 0|"
PRINT " ";
FOR var4%=first%+1 TO first%+last%+5 STEP 5
PRINT var4%;" ";
NEXT var4%
PRINT " Year"
FOR var2%=2 TO last%
FOR var3%=1 TO 2
hor1=(var2%+4)*8-4
ver1=(20-annual%(var2%-1,var3%))*8+4
hor2=(var2%+5)*8-4
ver2=(20-annual%(var2%,var3%))*8+4
LINE (hor1,ver1)-(hor2,ver2),var3%
NEXT var3%
NEXT var2%
verussr%=(20-annual%(last%,1))+1
verusa%=(20-annual%(last%,2))+1
LOCATE verussr%,last%+7
PRINT "USSR"
LOCATE verusa%,last%+7
PRINT "USA"
RETURN
computeannual:
CLS
PRINT "Computing annual totals - please wait."
FOR var%=1 TO 30
annual%(var%,1)=0
annual%(var%,2)=0
NEXT var%
final%(1)=0
final%(2)=0
first%=VAL(RIGHT$(mission$(pt%(1),3),2))-1
last%=VAL(RIGHT$(mission$(pt%(count%),3),2))-first%
FOR var2%=1 TO count%
var3%=0
IF (mission$(var2%,2)<>"X") AND (mission$(var2%,2)="USSR") THEN var3%=1
IF (mission$(var2%,2)<>"X") AND (mission$(var2%,2)="USA") THEN var3%=2
IF var3%<>0 THEN
annual%(VAL(RIGHT$(mission$(var2%,3),2))-first%,var3%)=annual%(VAL(RIGHT$(mission$(var2%,3),2))-first%,var3%)+1
final%(var3%)=final%(var3%)+1
END IF
NEXT var2%
RETURN
savefile:
CLS
PRINT "Saving mission data - please wait."
OPEN "SLMissions" FOR OUTPUT AS #1
FOR var2%=1 TO count%
IF mission$(pt%(var2%),2)<>"X" THEN
FOR fld%=1 TO 11
PRINT# 1,mission$(pt%(var2%),fld%)
NEXT fld%
END IF
NEXT var2%
CLOSE #1
PRINT
PRINT "Return to the menu."
RETURN
checknation:
WHILE (mission$(num1%,2)<>"USSR") AND (mission$(num1%,2)<>"USA")
PRINT
PRINT "The Nation must be USA or USSR."
PRINT
PRINT "What is the new ";fld$(2);
INPUT mission$(num1%,2)
mission$(num1%,2)=UCASE$(mission$(num1%,2))
WEND
RETURN
checkdate:
WHILE (MID$(mission$(num1%,3),3,1)<>"/") OR (MID$(mission$(num1%,3),6,1)<>"/") OR (LEN(mission$(num1%,3))<>8)
PRINT
PRINT "The Date must be in MM/DD/YY format."
PRINT
PRINT "What is the new ";fld$(3);
INPUT mission$(num1%,3)
WEND
RETURN
startkey:
PRINT
PRINT "Hit the space bar to continue or the return key to quit."
PRINT
RETURN
getkey:
var$=INKEY$
IF var$<>CHR$(13) AND var$<>CHR$(32) THEN getkey
RETURN
bounds:
asklow:
PRINT "Start the list with what mission # ( 1 -";count%;")";
INPUT low%
IF low%<1 OR low%>count% THEN asklow
PRINT
askhigh:
PRINT "End the list with what mission # (";low%;"-";count%;")";
INPUT high%
IF high%<low% OR high%>count% THEN askhigh
RETURN
printdata:
PRINT "Mission #";num%
PRINT mission$(pt%(num%),1);TAB(21);mission$(pt%(num%),2);TAB(26);
PRINT mission$(pt%(num%),3);TAB(36);mission$(pt%(num%),4);TAB(46);
PRINT mission$(pt%(num%),5);TAB(66);mission$(pt%(num%),6);" LBS"
PRINT mission$(pt%(num%),7);" MIN";TAB(11);mission$(pt%(num%),8);" MI";
PRINT TAB(21);mission$(pt%(num%),9);" MI";TAB(31);mission$(pt%(num%),10);
PRINT " DEG";TAB(41);mission$(pt%(num%),11)
PRINT
RETURN